home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 October: Mac OS SDK / Dev.CD Oct 00 SDK1.toast / Development Kits / Mac OS / GameSprocket SDKs / InputSprocket SDK / InputSprocket Release Notes < prev    next >
Encoding:
Text File  |  2000-02-24  |  22.3 KB  |  474 lines  |  [ttro/ttxt]

  1. InputSprocket 1.7.3 SDK
  2. Release Notes
  3. -----------------------
  4.  
  5.  
  6. For a detailed list of changes from the previous version, please read the
  7. change list at the end of this document.
  8.  
  9. Please report all bugs using the bug reporter on Apple Developer Connection:
  10.  
  11. <http://developer.apple.com/bugreporter/index.html>
  12.  
  13.  
  14. Release Components
  15. ------------------
  16. InputSprocket Extension          The main InputSprocket library, all drivers integrated
  17. USB HID Driver                               This USB driver is required for joystick support on systems
  18.                                  which do not have USB Device Extension 1.3 or later
  19.  
  20. HID Library                      This shared library contains the HID parser, required for USB
  21.  
  22. InputSprocket Debug Extension    Debug build of InputSprocketLib, all drivers integrated.
  23.                                  This file should be installed instead of InputSprocket Extension
  24.                                  not in addition to it.
  25.  
  26. InputSprocket.h                  Required header for applications.
  27. InputSprocket.r                  Rez templates for appliciations
  28.  
  29. InputSprocketLib                 link library
  30. ISpDeferLib                      link library, used for InputSprocket drivers
  31.  
  32. Writing an ISp Driver.pdf                    Documentation for building an InputSprocket driver
  33.  
  34. WARNING: don't place both the debugging and non-debugging versions of the
  35. library in the search path or you will not be sure which version you are
  36. using.
  37.  
  38.  
  39.  
  40. Dependencies
  41. ------------
  42.  
  43. InputSprocket requires the latest Universal Headers -- You can find them with the
  44. latest version of your development environment, Apple's WWW and FTP sites or the
  45. developer CD-ROMs.
  46.  
  47. InputSprocket needs a 640x480 display (or larger) in order for its dialog to 
  48. work. If you are asking DrawSprocket for a smaller display size than that you
  49. should switch out before calling InputSprocket.
  50.  
  51.  
  52.  
  53.  
  54. Compatibility with Previous Releases
  55. ------------------------------------
  56.  
  57. InputSprocket 1.7 should be fully compatible with previous releases of InputSprocket.
  58.  
  59. Changes from 1.7.2 to 1.7.3
  60. ---------------------------
  61.   - Error codes moved to Errors.h
  62.   - Increased the size of inputsprocket queues from 5 to 32, to fix mouse overflow problems
  63.   - HID Driver 1.3.7 included, rather than 1.2.5, this fixes the following bugs:
  64.      - Incorrected processed commands using the depricated HIDModule API
  65.      - Support absolute pointing devices as cursors
  66.      - Handle device that stalls on setidle request
  67.      - Timeout on retry count, for non-frequent errors
  68.      - Do not use ExpertStatusLevel, so as to work with USB 1.1
  69.      - Do not run on versions of USB earlier than 1.1
  70.      - Immersion HID driver supports client passing 0 size buffer to get size of HID descriptor
  71.   - HID Library 1.3.7, rather than 1.2.5, does not report errors for items with zero report count
  72.  
  73. Changes from 1.7.1 to 1.7.2
  74. ---------------------------
  75.  
  76. Bug fixed:
  77.   - InputSprocket was crashing on NuBus machines. (Those machines without DriverServicesLib)
  78.  
  79. Changes from 1.7 to 1.7.1
  80. -------------------------
  81.  
  82. Bugs fixed:
  83.    - Assigning multiple items in the same user interface element to the same need 
  84.      was not being correctly saved
  85.    - If a game had needs for multiple players, then any needs that were not player 
  86.      specific (player 0) were lost on save
  87.    - For some USB devices, the device area was too large to fit on 640x480, and 
  88.      therefore those devices would not show up when the display was this size.
  89.    - InputSprocket would fail to close on MacOS 8.1 due to missing component.
  90.    - On MacOS 9 only, calibration info was not being saved.
  91.  
  92. Changes from 1.4.1 to 1.7
  93. -------------------------
  94.  
  95. This version adds a generic USB HID class driver, which replaces all the vendor specific drivers in the previous version. Any USB device which is a true HID device should function, as long as the software determins that it is a gaming device (see list below). 
  96.  
  97. Supported HID device applilcation level collections:
  98. - Generic desktop page (0x01): Mouse, Joystick, Game Pad, Multi-Axis Controller
  99. - Simulation controls page (0x02): Flight, Automobile, Tank, Spaceship, 
  100.      Submarine, Sailing, Motorcycle, Sports, Airplane, Helicopter, 
  101.      Magic Carpet, Bicycle Simulation Devices; Flight Control Stick, Flight
  102.      Stick, Flight Yoke
  103. - VR Controls Page (0x03): Belt, Body Suit, Glove, Head Mounted Display, Hand
  104.      Tracker, Oculometer, Vest, Animatronic Device
  105. - Sports Controls Page (0x04): Baseball Bat, Golf Club, Rowing Machine, 
  106.      Treadmill
  107. - Game Controls Page (0x05): 3D Game Controller, Pinball Device, Gun Device
  108.  
  109. Devices with relative value input (ie pointing devices, such as mice), now can have their values 'accelerated' before being passed along to the application need. This is user controlled, in the configure dialog.
  110.  
  111. All the InputSprocket drivers consolidated into one file. External files are loaded first, so an external file gets the first chance to match to a device.
  112.  
  113. The field 'reserved1' in the ISpDeviceDefinition structure was renamed permanentIDExtend. This change will not effect any binaries, but source code to some drivers may require an update when using the new InputSprockket.h header file. This field is used to extend the permanentID to 64 bits. If this field is zero, then only 32 bits are significant, as before. If these two fields do not match, but the permanentID fields do match, that will be prefered to a device where the permenantIDs do not match. (If the permanentIDs do not match, then the permanentIDExtend fields will not be compared).
  114.  
  115. Changes from 1.4 to 1.4.1
  116. -------------------------
  117.  
  118. - International bug fixes.
  119.  
  120. - Minor bug fixes.
  121.  
  122. - Localized for distribution with localized versions of MacOS.
  123.  
  124.  
  125. Changes from 1.3 to 1.4
  126. -----------------------
  127.  
  128. This version adds support for many new USB devices: Saitek Cyborg 3D stick, 
  129. KYE/Genius Joystick and Gamepad, Edge/Rockfire Joysticks (2), and gamepads (3).
  130.  
  131. The need label kISpElementLabel_Btn_PauseResume has been replaced with two
  132. new labels: kISpElementLabel_Btn_Quit and kISpElementLabel_Btn_StartPause.
  133. This is to clarify the purpose and default behavior intended by a need. The
  134. quit need defaults to '<esc>' on the keyboard and can only be changed to
  135. 'Cmd Q'. This need quits an active game, or quits the application entirely.
  136. The start/pause need corresponds to the action that a 'start' button on a 
  137. gamepad would have, which is often pause. Gamepads and other devices with
  138. a button labeled 'start' should default to the start/pause need. On a keyboard,
  139. the start/pause need can be mapped to any key, unlike the quit need.
  140.  
  141. There is a hack to allow calibration of USB devices.  Essentially, the first
  142. time you configure a device, you should roll the controller to the maximum
  143. extents possible.  InputSprocket will memorize the values being returned by
  144. the controller and use these to calibrate it.
  145.  
  146. Changes from 1.2 to 1.3
  147. -----------------------
  148.  
  149. A resource definition file "InputSprocket.r" has been added. You can use this
  150. file to create a Rez '.r' file to build the ISp resources into your
  151. application.
  152.  
  153. One of the templates is for the 'tset' resource created by the ISp keyboard
  154. driver. Note this templete is ONLY valid for a 'tset' generated by the
  155. keyboard. The only way to tell who created the 'tset' is to examine the 'setl'
  156. resource that points to it. The new sample code for DroneZone uses this
  157. template so that the defaults for the keyboard are in a Rez file and are
  158. easily updated when then application's list of needs changes. You still have
  159. recreate the sets for mice and gaming devices when your needs list changes
  160. during development, but not having to re-setup all the keyboard keys every
  161. time should be a big win. (Note: You may have to delete your InputSprocket
  162. Preferences file in order to get the new defaults from the application -- or
  163. change the subCreatorCode passed to ISpInit.)
  164.  
  165. Special thanks to Jeremy Erwin who is not affiliated with MacALLY, for the 
  166. code to support the MacALLY stick.
  167.  
  168. All mice and keyboard drivers are 'passthru' in the debug versions. This
  169. means that it is VERY important you make sure you also test with the release
  170. versions of the drivers, since some things will work fine with the debug
  171. versions but not with the release drivers. On the other hand, you will never
  172. get stuck in the debugger without being able to type and/or move the cursor.
  173.  
  174. InputSprocket resets all elements to 'zero' values (symmetric axis are
  175. reset to the center) across suspend/resume. It is the responsibility of
  176. individual ISp drivers to push data to any elements which are non-default
  177. valued when the driver is reactivated.
  178.  
  179. Many minor bugs have been fixed.
  180.  
  181. 68K support has been added. 68K InputSprocket is only available through
  182. CFM-68K.
  183.  
  184.  
  185.  
  186.  
  187. Changes from 1.1 to 1.2
  188. -----------------------
  189. This release involves many minor improvements to the InputSprocket drivers, 
  190. including an improved user interface (UI) for axis. Some new drivers have 
  191. also been added. Several problems and bugs have been addressed.
  192.  
  193. A new resource has been defined (kISpApplicationResourceType = 'isap') which
  194. all applications which use InputSprocket should put (ID 0) in their resource
  195. fork. They should always set bit 0 (kISpAppResFlag_UsesInputSprocket) and
  196. set bit 1 (kISpAppResFlag_UsesISpInit) if they use the high level API (ie they call
  197. ISpInit, ISpConfig, etc... in other words they have a needs list). The rest of
  198. the bits and reserved fields should be set to 0.
  199.  
  200. A new ISpElementKind has been added: kISpElementKind_Delta which specifies
  201. a Fixed point number of inches moved. InputSprocket Mouse and 
  202. InputSprocket Kensington now register elements of this kind in the low level. 
  203. The high level (through ISpConfigure) supports axis as well as delta kinds.
  204. This kind is very useful if you want to control a cursor.
  205.  
  206. A new definition of ISpNeed can be used by defining USE_OLD_ISPNEED_STRUCT to
  207. 0. The first reserved field (a short) was changed to two UInt8s: playerNum and
  208. group. Use playerNum to tell the driver some needs are related to a particular
  209. player (on the same machine). The SprocketInvaders source code will be reved to
  210. use this field. Group is used to group items together, such as a look up, look
  211. down need (assuming you can't use an axis). You should also group items
  212. together that have the same effect, but are 'tuned' button, axis, and delta versions.
  213. The current ISp drivers do not use this hinting, yet. Some new definitions for the 
  214. ISpNeedFlagBits have been added. If you use the new definition, make sure you 
  215. check your code for cases where you were initializing the struct. You now may 
  216. be misaligned, and many compilers will NOT generate a warning.
  217.  
  218. InputSprocket Mouse supplies pseudo-buttons in the high level for modifier
  219. keys in combination with mouse clicks. You will have at least four buttons
  220. (where some may actually be command/shift/control/option-click on 
  221. one-button mice) for any mouse device. This should make it straightforward
  222. to port games which expect a two button mouse: use ISp with delta and
  223. button needs -- and dont worry about what type of device the user has.
  224.  
  225. InputSprocket Speech added back to distribution (crashing bug fixed)
  226.  
  227. - InputSprocket Gravis supports Blackhawk and uses new UI (new save set format)
  228. - InputSprocket Thrustmaster uses new UI (new save set format)
  229. - InputSprocket Joy completely revised, renamed InputSprocket CH, now supports
  230.   multiple devices seperately and supports up to 8 buttons and 4 hats per device
  231.   (new save set format)
  232. - InputSprocket Kensington added, supports kensington devices regardless of their software
  233. - InputSprocket Sidewinder 3D Pro added, supports Microsoft Sidewinder joystick 
  234. - InputSprocket AppleJack added, supports Pippin/AppleJack controller
  235. - InputSprocket Keyboard supports modifier keys in conjunction with a normal key
  236.   (now either Escape or Cmd-Q are valid for kISpElementLabel_Btn_PauseResume)
  237. - Device and element strings have been reviewed, and some have been changed
  238. - ISpConfigure saves and restores the port.
  239. - A new function: ISpTimeToMicroseconds has been added.
  240. - There are some new bits defined for ISpNeedFlagBits. 
  241. - Some new element labels have been added.
  242. - Old saved sets for devices other than mouse and keyboard do not work
  243.  
  244.  
  245. Known Problems in 1.2
  246. ---------------------
  247. - Kensington Mouse-in-a-box reports two buttons (only the first one works)
  248. - ALPS GlidePoint does not appear if ALPS software is installed (appears w/o
  249.   ALPS software)
  250. - Mouse Systems Mouse does not appear if Mouse Systems software ('3-Button
  251.   Power') is installed (appears as 1 button mouse w/o Mouse Systems software)
  252. - CH Trackball PRO does not appear
  253. - Thrustmaster software generates keyDowns if so configured with ThrustWare
  254. (fix is to configure all buttons to do nothing in ThrustWare)
  255. - Machines based on the Tanzania motherboard (Motorola StarMax, APS MPower,
  256.   Apple PowerMacintosh 4400) will always show an extra Mouse device for the
  257.   PS/2 mouse regardless whether one is plugged in (even though the 4400 has
  258.   no PS/2 ports, the phantom ADB devices for them are still created). The
  259.   PS/2 mouse only reports one button.
  260. - When a Sidewinder 3D Pro stick is connected, an extra mouse device is shown
  261.   which is active when the 'mouse/joystick' switch is switched to 'mouse'.
  262. - It is unstable to have multiple applications use InputSprocket 
  263.   simultaneously. If your application can be suspended and uses InputSprocket 
  264.   you should use ISpShutdown and ISpStartup so that InputSprocket is off while
  265.   you are in the background.  This is a bug (since 1.0) and will be fixed
  266.   in the next version.  If you are a user you can work around this problem
  267.   by not running more than one InputSprocket application at the same time.
  268. - When debugging, you may need to deactivate the Mouse and Keyboard drivers in
  269.   order to be able to interact with your debugger.
  270.  
  271.  
  272.  
  273. Changes from 1.0.2 to 1.1
  274. -------------------------
  275.  
  276. Known Problems in 1.1
  277. ---------------------
  278. - Kensington Trackball does not appear if Kensington software is installed
  279. (appears w/o Kensington software)
  280. - ALPS GlidePoint does not appear if ALPS software is installed (appears w/o
  281. ALPS software)
  282. - Mouse Systems Mouse does not appear if Mouse Systems software ('3-Button
  283. Power') is installed (appears as 1 button mouse w/o Mouse Systems software)
  284. - CoStar Stingray Trackball does not appear if CoStar software ('Stingray') is
  285. installed (appears w/o CoStar software)
  286. - CH Trackball PRO does not appear
  287. - Thrustmaster software generates keyDowns if so configured with ThrustWare
  288. (fix is to configure all buttons to do nothing in ThrustWare)
  289.  
  290. Changes from 1.02
  291. -----------------
  292. - new APIs (ISpStartup, ISpShutdown, ISpTickle, ISpDevices_ActivateClass,
  293.         ISpDevices_DeactivateClass)
  294. - some general UI improvements in both appearance and performance have been
  295. made
  296. - new driver InputSprocket Joy (supports some features of JoyManager devices --
  297. ie mainly CH products)
  298. - new driver InputSprocket Thrustmaster (supports FCS, WCS, RCS)
  299. - new driver InputSprocket Gravis (supports MouseStick, Firebird, GamePad)
  300. - new driver InputSprocket Speech (you must activate explicitly and requires
  301. ISpTickle be called)
  302. - InputSprocket Mouse changed to have new UI and is implemented via ADBMgr
  303. directly instead of a CursorDeviceMgr Patch
  304. - InputSprocket Keyboard has been slightly changed if there is only one page
  305. - driver function to plot icons has been changed (faster)
  306. - bug when you select a 0 length name to save a set has been fixed
  307. - bug involving choosing monitor has been fixed (might chose something other
  308. than the main monitor randomly)
  309. - CH Flightstick, CH Gamepad, CH Jetstick and MacEnjoy no longer generate a
  310. mouse device
  311. - a crashing bug involving multiple applications using input sprocket
  312. simultaniously has been fixed
  313. - a very small memory leak involving ISpConfigure has been fixed
  314. - DONT_USE_OLD_INPUT_SPROCKET_LABELS changed to USE_OLD_INPUT_SPROCKET_LABELS
  315. in InputSprocket.h
  316. - a bug where InputSprocket Keyboard and InputSprocket Mouse called InitGraf
  317. has been fixed
  318.  
  319. Other notes:
  320. - you must call ISpTickle in order for InputSprocket Speech to work
  321. - you must call ISpDevices_ActivateClass(kISpDeviceClass_SpeechRecognition) to
  322. turn InputSprocket Speech on
  323. - requires SpeechRecognition extension 1.5.1 (PlainTalk 1.5)
  324.  
  325.  
  326. InputSprocket Joy Notes
  327. -----------------------
  328. - supports all JoyManager devices as a single input sprocket device.
  329. - UI may show popups for controls the device does not have
  330. - JoySimpleData based
  331. - only supports the trigger and three additional buttons
  332. - digital pointing devices (ex. CH Gamepad's pad) are treated as a pair of axis
  333. not a POV Hat
  334.  
  335.  
  336.  
  337. Changes from 1.0 and 1.0.2 Release Notes
  338. ----------------------------------------
  339.  
  340.  
  341. There is a new InputSprocket.h that has new versions of the names for the
  342. labels as well as additional labels.
  343.  
  344. The following bugs were fixed in the 1.01 or the 1.02 releases.
  345. - keyboard UI now generates better names than Min/Max for axis if ElementLabel
  346. is useful
  347. - various problems with alignment and growing of dialog were fixed
  348. - flickering with icons in thrustmaster and mouse fixed
  349. - stub library included in this release with file type 'stub'
  350. - axis flipping check box now works again for the mouse driver
  351. - ISpDevices_Extract functions no work when an exact count is passed to them
  352. - Icon plotting is more robust.
  353. - The OK button is no longer hilited when the keyboard is active.
  354. - InputSprocket will now unload the drivers when the last fragment is unloaded
  355. - InputSprocket no longer leaks memory when you quit in the suspended state
  356. - when there are no devices to configure and ISpConfigure is called it will
  357. display a warning instead of doing nothing
  358. - ISpSuspend no longer leaks 10,000 bytes every call
  359.  
  360. The following bugs are known:
  361. -There is an incompatability with the mouse driver and the Kensignton trackball
  362. software that causes no mice devices to appear.
  363. -There is a incompatability with the Kensington trackball that causes an extra
  364. mouse device to appear when the hardware is installed and the software is not
  365. installed.
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373. InputSprocket Clarifications and Guidelines
  374. -------------------------------------------
  375.  
  376. Although not a change, a clarification is needed on how exclusive items operate
  377. particularly with regards to hat-type switches (direction-pads, digital
  378. joysticks and hat switches). A group of mutually exclusive items is a group of
  379. items where activation of one item automatically deactivates other items in the
  380. group. A group of mutually exclusive items might be assigned to a hat. An
  381. example is "look" functionality which allows the user to different directions
  382. from the cockpit in a flight simulator implemented as four different button
  383. needs. A problem will arise if the group of items only uses the activation of
  384. these buttons to select which item is active. This problem will only arise if
  385. the program in question does not properly handle combinations of the button
  386. activations.
  387.  
  388. For example, if I assign "look right" to the right item of a hat and "look
  389. forward" to the top item of a hat. Now, if I press right on the hat I will look
  390. right. If I now wiggle my thumb upwards so that up is activated (up and right
  391. are now simultaneously activated) I will look forward. If I slide my thumb back
  392. to the right, I will release the "look up" item, but since the "look right"
  393. item was activated the whole time, I do not reactivate the "look right"
  394. function. I now have my thumb holding the hat right, but I am looking forward.
  395.  
  396. In fact, since the "look right" item is already held down, it is the ONLY
  397. button on the entire controller which cannot be pressed and it becomes
  398. impossible to look right without releasing the hat and pressing it right again.
  399. Symptoms of this are that it is easier to look right by pressing forward and
  400. sliding right to the corner of the d-pad than it is to press right directly!
  401.  
  402. The only way to correct for this is to consider both presses (kISpButtonDown)
  403. and releases (kISpButtonUp) of any button needs which are exclusive. In this
  404. case, when right is pressed, the right function would be activated. When the up
  405. function is activated, both items are now activated. The InputSprocket client
  406. can either deactivate the original right function and switch to the up
  407. function, or it can remain with the right function and only switch to the up
  408. function when the right button is released. If the hat is moved to the right
  409. again and the up function is released, then the client should switch back to
  410. the right function if it has switched away.
  411.  
  412. Proper handling of releases of button needs will allow mutually exclusive
  413. functions to operate properly.
  414.  
  415.  
  416.  
  417.  
  418. Before you ship any application, check to make sure you get no warnings when
  419. running with InputSprocketDebugLib and the debug versions of the drivers.
  420.  
  421. We recommend that if you are using InputSprocket version greater than 1.02
  422. that you no longer support any third party joystick APIs.  You must not support
  423. those APIs at the same time as you have InputSprocket devices enabled.
  424.  
  425. If you are using InputSprocket via the high level (ISpConfigure and ISpInit and
  426. so on), We recommend that you only use the axis and button data types and
  427. build the controls that you need out of those types.  This will get you the best
  428. support.  Many of the drivers are going to only primarily emulate those
  429. datatypes.
  430.     
  431. Your game may provide default and optional configurations for the
  432. keyboard, the mouse and any other devices.  This is done by including
  433. 'setl' and 'tset' resources a resource file, such as the application's,
  434. that is open when ISpInit and ISpConfigure are called.  Since the
  435. format of the 'tset' resource is determined by the device, it is
  436. easiest to use the configuration dialog to establish the desired
  437. configurations then copy them from the Preferences file into your
  438. resource file.
  439.         
  440.     1.    Remove the InputSprocket Preferences file from the Preferences
  441.                 folder.
  442.             
  443.     2.    Run your game, and invoke the ISpConfigure dialog.
  444.             
  445.     3.    Configure and save as many sets as you like for any and all
  446.                 devices.
  447.             
  448.     4.    Quit.
  449.             
  450.     5.    Use ResEdit to move the 'setl' and 'tset' resources to your
  451.           resource file.
  452.             
  453.     6.    Edit the 'setl' resource using the 'TMPL' supplied in
  454.                 InputSprocketSimpleTest.rsrc.
  455.             
  456.     7.    Change the flags field to $00000002 for the default entry for
  457.           a given device or $00000004 for any other entry for that
  458.           device.
  459.             
  460.     8.    Again remove the InputSprocket Preferences file from the
  461.           Preferences folder so you can test with a clean slate.
  462.             
  463.     9.    Rebuild your game and try out your new configurations.
  464.             
  465.             
  466. Alternatively, Rez templates are now provided for all InputSprocket resources.
  467.     
  468.  
  469.  
  470.  
  471. ISp drivers must insure that they are VM safe. ADB drivers can link to 
  472. InputSprocketDeferLib to insure their ADB handlers are executed at a time
  473. where it is safe to page. The new sample ADB driver does this.
  474.